Generating and distributing a replacement playlist

ABSTRACT

An embodiment may involve a server device transmitting, over a wide area network, a first playlist with a first duration to a client device. Possibly while the client device is playing out a current audio file of a first plurality of audio files in the playlist, the server device may receive an instruction from the client device and generate a second playlist. The second playlist may include references to a second plurality of audio files, where playout of the second plurality of audio files may have a duration that is less than the duration of the playout of the first plurality of audio files. The server device may transmit, over the wide area network, the second playlist to the client device. Reception of the second playlist at the client device may cause the audio player application to retrieve and play out the second plurality of audio files.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. patent application Ser. No.15/936,104, filed Mar. 26, 2018, which is hereby incorporated byreference in its entirety. U.S. patent application Ser. No. 15/936,104claims priority to U.S. patent application Ser. No. 15/043,085, filedFeb. 12, 2016, which is hereby incorporated by reference in itsentirety. U.S. patent application Ser. No. 15/043,085 claims priority toU.S. provisional patent application No. 62/274,591, filed Jan. 4, 2016,which is hereby incorporated by reference in its entirety.

BACKGROUND

To listen to the radio, a listener typically tunes a receiver to aparticular frequency (e.g., an AM or FM frequency, or a satellitefrequency) and listens to music, news, or other audible content beingbroadcasted on that frequency by a radio station. The radio stationgenerates programs of audible content that are transmitted to alllisteners simultaneously. These programs may be generated in advance, ormay be generated in real-time or in an ad hoc fashion. In some cases,this can lead to situations where there is a thematic or emotionalmismatch between individual units of the audible content that make upthe playlist. Or, the playlist may inadvertently contain material thatcould be offensive to particular listeners, or could be consideredinsensitive based on current events.

SUMMARY

The embodiments herein disclose various mechanisms for generatingplaylists such that the audible content referenced therein has some formof thematic association or is arranged to be of an approximate length.For instance, music, news, and/or advertising content may be selectedbased on a particular user's preferences or information known about thatuser. At least some of these units of audible content may be selectedbased on properties of preceding or following units so that there isthematic continuity from unit to unit of the playlist.

In some cases, this may mean that an attribute of an audio filecontaining music (e.g., an artist name, a song title or lyrical content)may be used to choose an audio file containing a story (e.g., a newsstory). Conversely, the content of an audio file containing a story maybe used to choose an audio file containing music. In a playlist, areference to the audio file containing the story may be ordered beforeor after a reference to the audio file containing music.

Accordingly, a first example embodiment may involve, possibly based on aprofile associated with a client device, a server device selecting anaudio file containing music. The client device and the server device maybe in communication with one another by way of a wide-area network, andthe client device may include an audio player application. Possiblybased on an attribute associated with the audio file containing themusic, the server device may select an audio file containing a story.The server device may generate a playlist for the client device, wherethe playlist includes (i) a reference to the audio file containing themusic, and (ii) a reference to the audio file containing the story. Theserver device may transmit the playlist to the client device over thewide area network. Reception of the playlist at the client device maycause the audio player application to retrieve and play out each of theaudio file containing the music and the audio file containing the story.

A second example embodiment may involve, possibly based on a profileassociated with a client device, a server device selecting a text filecontaining a story. The client device and a server device may be incommunication with one another by way of a wide-area network, and theclient device may include an audio player application. Possibly based ontext within the text file containing the story, the server device mayselect an audio file containing music. An automatic text-to-speechsystem may convert the text file containing the story to an audio filecontaining the story. The server device may generate a playlist for theclient device, where the playlist includes (i) a reference to the audiofile containing the music, and (ii) a reference to the audio filecontaining the story. The server device may transmit the playlist, overthe wide area network, to the client device. Reception of the playlistat the client device may cause the audio player application to retrieveand play out each of the audio file containing the music and the audiofile containing the story.

In other cases, an audio file a story may be parsed or scanned forkeywords (e.g., after processing by an automatic speech-to-text system).Based on the presence or absence of certain keywords, a mood of thestory (e.g., happiness, sadness, humor, tragedy) may be determined. Insome embodiments, a semantic analysis may be performed on the story inpart or as a whole, and the mood of the story may be based on thisanalysis.

An audio file containing music may be chosen such that the audio filehas the same or a similar mood, or at least a mood that is based on themood of the story. Conversely, a mood associated with an audio filecontaining music may be used to choose an audio file containing a story.In a playlist, a reference to the audio file containing the story may beordered before or after a reference to the audio file containing music.

Thus, a third example embodiment may involve a server device obtainingan audio file containing a story. A client device and the server devicemay be in communication with one another by way of a wide-area network,and the client device may include an audio player application. Possiblybased on an attribute associated with the audio file containing thestory and/or a sematic analysis of the story, the server device maydetermine a mood of the story. Possibly based on the mood of the story,the server device may select an audio file containing music, where theaudio file containing the music is associated with an attribute that isindicative of the mood. The server device may generate a playlist forthe client device, where the playlist includes (i) a reference to theaudio file containing the music, and (ii) a reference to the audio filecontaining the story. The server device may transmit the playlist, overthe wide area network, to the client device. Reception of the playlistat the client device may cause the audio player application to retrieveand play out each of the audio file containing the music and the audiofile containing the story.

A fourth example embodiment may involve a server device obtaining anaudio file containing music. A client device and the server device maybe in communication with one another by way of a wide-area network, andthe client device may include an audio player application. Possiblybased on an attribute associated with the audio file containing themusic, the server device may determine a mood of the music. Possiblybased on the mood of the music, the server device may select an audiofile containing a story. An attribute associated with the audio filecontaining the story, and/or a semantic analysis of the story, may beindicative of the mood. The server device may generate a playlist forthe client device, where the playlist includes (i) a reference to theaudio file containing the music, and (ii) a reference to the audio filecontaining the story. The server device may transmit, over the wide areanetwork, the playlist to the client device. Reception of the playlist atthe client device may cause the audio player application to retrieve andplay out each of the audio file containing the music and the audio filecontaining the story.

In further embodiments, a client device may be retrieving and playingout audio files from a playlist generated by a server device. Inresponse to an input received by the client device, the client devicemay determine that the playout should end in a certain amount of time.For instance, a user may have activated a timer function at the clientdevice such that the client device is to terminate playout in aparticular number of minutes. In response to this input, the clientdevice may instruct the server device to generate a new playlist thatends after approximately the particular number of minutes. The serverdevice may generate and provide this new playlist to the client device,and the client device may begin retrieving and playing out audio filesfrom the new playlist. In some embodiments, the timer may be a sleeptimer and audio files referenced by the new playlist may be selectedand/or arranged so that they are conducive to sleep. In otherembodiments, the timer may measure the amount of time remaining until adestination is reached, or until an event occurs (e.g., the arrival or abus or train, or the beginning of an appointment).

Accordingly, a fifth example embodiment may involve a server devicegenerating a first playlist for a client device. The first playlist mayinclude references to a first plurality of audio files in a firstspecified order. Playout of the first plurality of audio files may havea first duration. The client device and the server device may be incommunication with one another by way of a wide-area network, and theclient device may include an audio player application. The server devicemay transmit, over the wide area network, the first playlist to theclient device. Reception of the first playlist at the client device maycause the audio player application to retrieve and play out at leastsome of the first plurality of audio files in the first specified order.Possibly while the client device is playing out a current audio file ofthe first plurality of audio files, the server device may receive aninstruction from the client device. Possibly in response to receivingthe instruction, the server device may generate a second playlist. Thesecond playlist may include references to a second plurality of audiofiles in a second specified order, where playout of the second pluralityof audio files may have a second duration that is less than the firstduration. The server device may transmit, over the wide area network,the second playlist to the client device. Reception of the secondplaylist at the client device may cause the audio player application toretrieve and play out the second plurality of audio files in the secondspecified order.

In a sixth example embodiment, an article of manufacture may include anon-transitory computer-readable medium, having stored thereon programinstructions that, upon execution by a computing device, cause thecomputing device to perform operations in accordance with the first,second, third, fourth, and/or fifth example embodiments.

In a seventh example embodiment, a computing device may include at leastone processor, as well as memory and program instructions. The programinstructions may be stored in the memory, and upon execution by the atleast one processor, cause the computing device to perform operations inaccordance with the first, second, third, fourth, and/or fifth exampleembodiments.

In an eighth example embodiment, a system may include various means forcarrying out each of the operations of the first, second, third, fourth,and/or fifth example embodiments.

Although examples described herein attribute certain acts to certaindevices, any device or devices could perform those acts. For instance,some or all of the acts attributed to a “server device” above could beperformed by different server devices and/or a client device.

These as well as other embodiments, aspects, advantages, andalternatives will become apparent to those of ordinary skill in the artby reading the following detailed description, with reference whereappropriate to the accompanying drawings. Further, it should beunderstood that this summary and other descriptions and figures providedherein are intended to illustrate embodiments by way of example onlyand, as such, that numerous variations are possible. For instance,structural elements and process steps can be rearranged, combined,distributed, eliminated, or otherwise changed, while remaining withinthe scope of the embodiments as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a high-level depiction of a client-server computing system,according to an example embodiment.

FIG. 2 illustrates a schematic drawing of a computing device, accordingto an example embodiment.

FIG. 3 illustrates a schematic drawing of a networked server cluster,according to an example embodiment.

FIG. 4 depicts a playlist, according to an example embodiment.

FIG. 5A is a message flow diagram depicting generation of a playlist,according to an example embodiment.

FIG. 5B is message flow diagram depicting playout of audio filesreferenced by a playlist, according to an example embodiment.

FIG. 6 is a flow chart for playlist generation and distribution,according to an example embodiment.

FIG. 7 is a flow chart for playlist generation and distribution,according to an example embodiment.

FIG. 8 is a table of relationships between moods, according to anexample embodiment.

FIG. 9 is a flow chart for playlist generation and distribution,according to an example embodiment.

FIG. 10 is a flow chart for playlist generation and distribution,according to an example embodiment.

FIG. 11 is a timing diagram, according to an example embodiment.

FIG. 12 is a flow chart for playlist generation and distribution,according to an example embodiment.

DETAILED DESCRIPTION

Example methods, devices, and systems are described herein. It should beunderstood that the words “example” and “exemplary” are used herein tomean “serving as an example, instance, or illustration.” Any embodimentor feature described herein as being an “example” or “exemplary” is notnecessarily to be construed as preferred or advantageous over otherembodiments or features. Other embodiments can be utilized, and otherchanges can be made, without departing from the scope of the subjectmatter presented herein.

Thus, the example embodiments described herein are not meant to belimiting. It will be readily understood that the aspects of the presentdisclosure, as generally described herein, and illustrated in thefigures, can be arranged, substituted, combined, separated, and designedin a wide variety of different configurations. For instance, steps,blocks, or acts assigned to a particular device (e.g., a server device)may be carried out by components of another device (e.g., a clientdevice) in alternative embodiments.

Further, unless context suggests otherwise, the features illustrated ineach of the figures may be used in combination with one another. Thus,the figures should be generally viewed as component aspects of one ormore overall embodiments, with the understanding that not allillustrated features are necessary for each embodiment.

1. OVERVIEW

Unlike traditional broadcast radio, online (e.g., Internet-based) radiocan transmit audio content to individual client devices or groups ofclient devices. Thus, this audio content can be personalized fordistinct users or groups of users. For instance, a server device maygenerate a playlist based on known attributes or preferences of one ormore users. This playlist may contain a sequence of references (e.g.,uniform resource locators, or URLs) to one or more remote audio files.Such a playlist may be transmitted to a client device of the user(s).The client device may traverse the playlist, retrieving and playing outthe audio files. In doing so, the client device may either download oneor more of the audio files (from the server device or a differentdevice) prior to playing them out, or may receive the audio files as astream.

Herein, a download of an audio file may refer to a client deviceobtaining the entire audio file from a server device before beginning toplay out any part of the audio file. The streaming of an audio file, onthe other hand, may involve the client device receiving one portion ofthe audio file while simultaneously playing out another,previously-received, portion of the audio file.

As an example, after or as the server device generates a playlist, theserver device may transmit the playlist to the client device, and theclient device may traverse the entries of the playlist. In doing so, theclient device may retrieve data representing each referenced audio file,and play out the audio files in accordance with the sequence defined bythe playlist. Thus, for each reference in the sequence defined by theplaylist, (i) the client device may transmit, to the server device (or adifferent device), a request for the referenced audio file, (ii) theserver device may receive the transmitted request, (iii) responsive tothe server device receiving the transmitted request, the server devicemay transmit to the client, a stream of the requested audio file, (iv)the client device may begin receiving and buffering the stream of theaudio file, and (v) while still receiving the stream of the audio file,the client device may play out the received portion of the audio file.In this way, a user may be provided with a substantially continuousplayout of the audio files referenced by the playlist.

Despite the advantages of personalizing audio programming, computerizedgeneration of playlists can lead to certain challenges. For instance,computer-generated playlists might not exhibit thematic continuity fromaudio file to audio file. As a consequence, the selecting and orderingof the audio files may appear to be random even though these audio filesmay have been selected based (in one way or another) on a user'sprofile.

The embodiments herein facilitate selection of audio files for inclusionin a playlist, and the ordering thereof, to be based on thematicassociation. Thus, the topic of a news story may influence selection ofmusic that follows the news story in the sequence. Likewise,characteristics of music (e.g., determined based on, tempo, volume,artist name, song title, and/or lyrical content) may influence theselection of a news story that follows the music in the sequence. Insome cases, more than one of such characteristics may be combined todetermine an overall similarity between the content of two or more audiofiles. Alternatively or additionally, the characteristic used may bedifferent in various parts of the playlist. For instance, artist namemay be used as the similarity characteristic between the first threeentries, song title may be used as the similarity characteristic betweennext the four entries, and so on.

Further, the mood of a news story (e.g., happy, sad, tragic, humorous)may influence the selection of music that follows the news story in thesequence. Likewise, the mood of music may influence the selection of anews story that follows the music in the sequence. In some cases, theserver device may try to match the moods of the news story and themusic, or the server device may select the moods of the news story andthe music so that these moods are not opposed to one another. In othercases, the server device may select these moods so that they are opposedto one another. Generally speaking, the server device may select one ofthe news story and the music such that its mood is based, in somefashion, on the mood of the other.

In various embodiments, news stories may initially exist in a textformat (e.g., a flat text file or a markup language file). When a newsstory is selected for inclusion in a playlist, the server device maydetermine whether an audio version of the news story exists, and if not,the server device may use text-to-speech (e.g., speech generation)technology to automatically generate an audio file of the news story.Conversely, to determine the mood of a news story in an audio fileformat, the server device may use speech-to-text (e.g., speechrecognition) technology to automatically generate a text file of thenews story. Then, the mood of the news story may be determined based onthe content of the text file.

In some embodiments, the server device may have generated a playlist,and a client device may be playing out the audio files referenced in theplaylist. The server device may receive, from the client device, anindication that the client device has been instructed to terminateplayout of audio at some point in the future. For instance, the user ofthe client device may have activated a sleep timer function of theclient device. In response, the server device may generate a newplaylist that approximately matches the length of time remaining beforethe client device is scheduled to terminate playout. Media referenced bythis new playlist may be selected and ordered so that the listener iseased to sleep as the playout approaches its end. For example, thedynamic range of the media may become progressively narrower, and/or thetempo of the audio may become progressively slower. In otherembodiments, the timer may measure the amount of time remaining until adestination is reached, or until an event occurs (e.g., the arrival or abus or train, or the beginning of an appointment).

Any of the embodiments described above, or elsewhere herein, may becombined in various ways. Thus, in some implementations, a new playlistgenerated in response to activation of the aforementioned timer functionmay be populated with thematically associated media.

While the embodiments described herein focus on generating playlists ofaudio files for audio playout, the same or similar embodiments can beused to generate playlists of audio/video files (e.g., television newsprograms, entertainment programs, commercials, movies, etc.) foraudio/video playout. Thus, the described embodiments are not limited toaudio files and may be applied to other types of media.

Regardless of how they may be implemented, the embodiments herein maymake use of one or more computing devices. These computing devices mayinclude, for example, client devices under the control of users, andserver devices that directly or indirectly interact with the clientdevices. Such devices are described in the following section.

2. EXAMPLE COMPUTING DEVICES AND CLOUD-BASED COMPUTING ENVIRONMENTS

FIG. 1 illustrates an example communication system 100 for carrying outone or more of the embodiments described herein. Communication system100 may include computing devices. Herein, a “computing device” mayrefer to either a client device, a server device (e.g., a stand-aloneserver computer or networked cluster of server equipment), or some othertype of computational platform.

Client device 102 may be any type of device including a personalcomputer, laptop computer, a wearable computing device, a wirelesscomputing device, a head-mountable computing device, a mobile telephone,or tablet computing device, etc., that is configured to transmit data106 to and/or receive data 108 from a server device 104 in accordancewith the embodiments described herein. For example, in FIG. 1, clientdevice 102 may communicate with server device 104 via one or morewireline or wireless interfaces. In some cases, client device 102 andserver device 104 may communicate with one another via a local-areanetwork. Alternatively, client device 102 and server device 104 may eachreside within a different network, and may communicate via a wide-areanetwork, such as the Internet.

Client device 102 may include a user interface, a communicationinterface, a main processor, and data storage (e.g., memory). The datastorage may contain instructions executable by the main processor forcarrying out one or more operations, such as operations relating to thedata sent to, or received from, server device 104, and/or otheroperations disclosed herein. The user interface of client device 102 mayinclude buttons, a touchscreen, a microphone, and/or any other elementsfor receiving inputs, as well as a speaker, one or more displays, and/orany other elements for communicating outputs.

Server device 104 may be any entity or computing device arranged tocarry out the server operations described herein. Further, server device104 may be configured to send data 108 to and/or receive data 106 fromthe client device 102.

Data 106 and data 108 may take various forms. For example, data 106 and108 may represent packets transmitted by client device 102 or serverdevice 104, respectively, as part of one or more communication sessions.Such a communication session may include packets transmitted on asignaling plane (e.g., session setup, management, and teardownmessages), and/or packets transmitted on a media plane (e.g., text,graphics, audio, and/or video data). For instance, data 106 may includetransmissions of requests for playlists and audio file streams, whiledata 108 may include, in response to these requests, transmissions ofplaylists and audio file streams, respectively.

Regardless of the exact architecture, the operations of client device102, server device 104, as well as any other operation associated withthe architecture of FIG. 1, can be carried out by one or more computingdevices. These computing devices may be organized in a standalonefashion, in cloud-based (networked) computing environments, or in otherarrangements.

FIG. 2 is a simplified block diagram exemplifying a computing device200, illustrating some of the functional components that could beincluded in a computing device arranged to operate in accordance withthe embodiments herein. Example computing device 200 could be a clientdevice, a server device, or some other type of computational platform.For purposes of simplicity, this specification may equate computingdevice 200 to a server from time to time. Nonetheless, the descriptionof computing device 200 could apply to any component used for thepurposes described herein.

In this example, computing device 200 includes a processor 202, a datastorage 204, a network interface 206, and an input/output function 208,all of which may be coupled by a system bus 210 or a similar mechanism.Processor 202 can include one or more CPUs, such as one or more generalpurpose processors and/or one or more dedicated processors (e.g.,application specific integrated circuits (ASICs), digital signalprocessors (DSPs), network processors, etc.).

Data storage 204, in turn, may comprise volatile and/or non-volatiledata storage and can be integrated in whole or in part with processor202. Data storage 204 can hold program instructions, executable byprocessor 202, and data that may be manipulated by these instructions tocarry out the various methods, processes, or operations describedherein. Alternatively, these methods, processes, or operations can bedefined by hardware, firmware, and/or any combination of hardware,firmware and software.

By way of example, the data in data storage 204 may contain programinstructions, perhaps stored on a non-transitory, computer-readablemedium, executable by processor 202 to carry out any of the methods,processes, or operations disclosed in this specification or theaccompanying drawings. Data storage 204 may also contain one or moreplaylists and/or audio files possibly referred to by playlists.

Network interface 206 may take the form of a wireline connection, suchas an Ethernet, Token Ring, or T-carrier connection. Network interface206 may also take the form of a wireless connection, such as IEEE 802.11(Wifi), BLUETOOTH®, or a wide-area wireless connection. However, otherforms of physical layer connections and other types of standard orproprietary communication protocols may be used over network interface206. Furthermore, network interface 206 may comprise multiple physicalinterfaces.

Input/output function 208 may facilitate user interaction with examplecomputing device 200. Input/output function 208 may comprise multipletypes of input devices, such as a keyboard, a mouse, a touch screen, andso on. Similarly, input/output function 208 may comprise multiple typesof output devices, such as a screen, monitor, printer, or one or morelight emitting diodes (LEDs). Additionally or alternatively, examplecomputing device 200 may support remote access from another device, vianetwork interface 206 or via another interface (not shown), such as auniversal serial bus (USB) or high-definition multimedia interface(HDMI) port.

In some embodiments, one or more computing devices may be deployed in anetworked architecture. The exact physical location, connectivity, andconfiguration of the computing devices may be unknown and/or unimportantto client devices. Accordingly, the computing devices may be referred toas “cloud-based” devices that may be housed at various remote locations.

FIG. 3 depicts a cloud-based server cluster 304 in accordance with anexample embodiment. In FIG. 3, functions of a server device, such asserver device 104 (as exemplified by computing device 200) may bedistributed between server devices 306, cluster data storage 308, andcluster routers 310, all of which may be connected by local clusternetwork 312. The number of server devices, cluster data storages, andcluster routers in server cluster 304 may depend on the computingtask(s) and/or applications assigned to server cluster 304.

For example, server devices 306 can be configured to perform variouscomputing tasks of computing device 200. Thus, computing tasks can bedistributed among one or more of server devices 306. To the extent thatthese computing tasks can be performed in parallel, such a distributionof tasks may reduce the total time to complete these tasks and return aresult. For purposes of simplicity, both server cluster 304 andindividual server devices 306 may be referred to as “a server device.”This nomenclature should be understood to imply that one or moredistinct server devices, data storage devices, and cluster routers maybe involved in server device operations.

Cluster data storage 308 may be data storage arrays that include diskarray controllers configured to manage read and write access to groupsof disk drives (e.g., hard drives with rotating platters or solid statedrives). The disk array controllers, alone or in conjunction with serverdevices 306, may also be configured to manage backup or redundant copiesof the data stored in cluster data storage 308 to protect against diskdrive failures or other types of failures that prevent one or more ofserver devices 306 from accessing units of cluster data storage 308. Asan example, cluster data storage 308 may contain one or more playlistsand/or audio files possibly referred to by playlists.

Cluster routers 310 may include networking equipment configured toprovide internal and external communications for the server clusters.For example, cluster routers 310 may include one or morepacket-switching and/or routing devices configured to provide (i)network communications between server devices 306 and cluster datastorage 308 via cluster network 312, and/or (ii) network communicationsbetween the server cluster 304 and other devices via communication link302 to network 300.

Additionally, the configuration of cluster routers 310 can be based atleast in part on the data communication requirements of server devices306 and cluster data storage 308, the latency and throughput of thelocal cluster networks 312, the latency, throughput, and cost ofcommunication link 302, and/or other factors that may contribute to thecost, speed, fault-tolerance, resiliency, efficiency and/or other designgoals of the system architecture.

As a possible example, cluster data storage 308 may include any form ofdatabase, such as a structured query language (SQL) database. Varioustypes of data structures may store the information in such a database,including but not limited to tables, arrays, lists, trees, and tuples.Furthermore, any databases in cluster data storage 308 may be monolithicor distributed across multiple physical devices.

Server devices 306 may be configured to transmit data to and receivedata from cluster data storage 308. This transmission and retrieval maytake the form of SQL queries or other types of database queries, and theoutput of such queries, respectively. Additional text, images, video,and/or audio may be included as well. Furthermore, server devices 306may organize the received data into web page representations. Such arepresentation may take the form of a markup language, such as thehypertext markup language (HTML), the extensible markup language (XML),or some other standardized or proprietary format. Moreover, serverdevices 306 may have the capability of executing various types ofcomputerized scripting languages, such as but not limited to Perl,Python, PHP Hypertext Preprocessor (PHP), Active Server Pages (ASP),JavaScript, and so on. Computer program code written in these languagesmay facilitate the providing of web pages to client devices, as well asclient device interaction with the web pages.

3. EXAMPLE PLAYLIST AND STREAMING ENVIRONMENT

FIG. 4 depicts an example playlist 400, which contains a sequence of twoor more references to audio files. Playlist 400 may take the form of acomputer file, such as a plain text file, an eXtensible Markup Language(XML) file, a HyperText Markup Language (HTML) file, a binary file, orsome other file format. Playlists may take other forms as well, and maycontain other types of content.

In some cases, playlist 400 may be generated by a server device, such asserver device 104, for a specific client device, such as client device102. In doing so, server device 104 may take into account information ina profile of client device 102 that is stored at or accessible to serverdevice 104. For instance, this profile may include representations ofpreferences for a user of client device 102, such as preferred types ofnews stories, preferred styles of music, preferred bit rates and/oraudio qualities of streamed audio files, and so on. In other cases,playlist 400 may be generated for a group of one or more client devices,possibly based on information in profiles of at least some of thesedevices.

Furthermore, as described in more detail below, server device 104 maygenerate playlist 400 so that the audio files referenced therein arethematically consistent, in terms of content and/or mood. Alternatively,server device 104 may generate playlist 400 so that the audio filesreferenced therein are at least not thematically inconsistent.

Each entry in playlist 400 may include an identifier of an audio fileand/or a reference to the audio file. Audio files referred to inplaylist 400 may be stored in database(s) 402. Thus, for example, thereferenced news story 1 in playlist 400 contains a URL that points tothe location of the audio file for news story 1, while the referencedsong 1 in playlist 400 contains a URL that points to the location of theaudio file for song 1, and so on. Nonetheless, playlists may take otherforms, including generic sequences of files or references to files.

In general, database(s) 402 may contains hundreds, thousands, tens ofthousands, or even more audio files. Thus, database(s) 402 may representone or more physical devices that store these files. Such physicaldevices may be located in the same physical location, or may bedistributed over a communication network (e.g., the Internet). In somecases, the audio files may be obtained via a third-party file downloador streaming service.

Playlist 400 contains references to four news stories that are roughlyinterleaved with references to five pieces of music. A playlist maycontain more or fewer entries, however. Additionally, the patterns ofnews stories and pieces of music may vary. In some cases, a playlist maypredominately contain references to news stories with few references tomusic, and in other cases a playlist may predominately containreferences to music with few references to news stories.

The mix of news stories and music referenced in playlist 400 mayrepresent a “morning drive time” style of content, in which spokenmaterial is interspersed with music. Thus, the “news stories” referredto in playlist 400 may include information regarding current events,weather, traffic, humorous pieces, banter, advertisements, and so on.Other arrangements of playlist content are possible.

In some embodiments, music and/or stories may be repeated to someextent. However, it is generally less desirable to repeat stories thanit is to repeat music. On the other hand, repetition of storiescontaining advertisements may be desirable.

FIG. 5A is a message flow diagram 500 depicting example generation anddistribution of a playlist. Flow chart 500 includes client device 102,server device 104, profile database 502, text story database 504, andaudio database 506. In some embodiments, one or more of server device104, profile database 502, text story database 504, and audio database506 may be combined into fewer components or divided into morecomponents. As just two possible examples, server device 104 may containthe functionality of profile database 502, text story database 504, andaudio database 506, or each of profile database 502, text story database504, and audio database 506 may be distributed over multiple physicalcomputing devices. Other arrangements are possible.

Client device 102 may include an audio player application that canrequest playlists, load playlists, parse playlists, and/or requeststreams of audio files referenced in playlists. In some embodiments, theaudio player application may be triggered to begin requesting andstreaming the audio files by reception of the playlist.

At step 510, client device 102 may transmit a playlist request to serverdevice 104. This request might not explicitly seek a particularplaylist, but may instead request streaming of a personalized radiostation for a user of client device 104. At step 512, server device 104may transmit, to profile database 502, a profile request for the profileof client device 104. At step 514, profile database 502 may transmit arepresentation of this profile to server device 104.

The profile might include information regarding the user of clientdevice 104 and his or her preferences with respect to radio programming.For instance, the profile might include demographic information aboutthe user, information regarding the user's news interests, e-commercetransactions, the user's favorite music styles, favorite sports teams,and so on. Based at least partially on the information in the profile,server device 104 may select stories and music for the playlist.

Therefore, at step 516, server device 104 may evaluate and select textstories from text story database 504. Similarly, at step 518, serverdevice 104 may evaluate and select audio files from audio database 506.Text story database 504 may include text files containing news stories,for example. Audio database 506 may include audio files of news storiesand/or music. In some embodiments not shown, audio files containing newsstories might be stored in one physical or logical database, while audiofiles containing music might be stored in a different physical orlogical database.

In the case that one or more text files containing news stories areselected for inclusion in the playlist, at step 520, server device 104(or another device) may convert these text files to audio files by usingtext-to-speech (TTS) technology. Such TTS technology may automaticallytransform words and/or syllables in a text file to synthetic utterances.At step 522, audio files of any converted news stories may be stored inaudio database 506.

At step 524, server device 104 may generate the playlist. As wasdiscussed in the context of playlist 400, the generated playlist mayinclude a sequence of references to audio files stored in audio database506. Then, at step 526, the playlist may be transmitted to client device102.

FIG. 5B is a message flow diagram 528 depicting example playout of audiofiles referenced in the playlist. Continuing from where FIG. 5A leftoff, at step 530, client device 102 may transmit, to audio database 506,a request for the first entry of the playlist. For instance, clientdevice 102 may parse the playlist, determine the URL of the first entry,and request the content at that URL from audio database 506. Inresponse, at step 532, audio database 506 may transmit, to client device102, a stream of the audio file associated with this entry. Then, atstep 534, client device 102 may play out the stream.

Notably, client device 102 may receive and buffer a portion of thestream (e.g., 5-10 seconds) before beginning playout of the stream. Inthis way, if there is jitter in the delivery of subsequent portions ofthe stream to client device 102, this jitter may be hidden from the userby the buffering of the stream. Client device 102 may seek to maintainthis buffer through playout of all audio files.

At step 536, client device 102 may transmit, to audio database 506, arequest for the second entry of the playlist. Client device 102 maytransmit this request while still playing out a portion of the audiofile associated with the first entry. In this manner, client device 102may be able to transition smoothly from playout of the audio fileassociated with the first entry to playout of the audio file associatedwith the second entry. For instance, the audio player application mayfade out the end of the audio file associated with the first entry whilefading in the beginning of the audio file associated with the secondentry.

Regardless, at step 538, audio database 506 may transmit, to clientdevice 102, a stream of the audio file associated with the second entry.Then, at step 540, client device 102 may play out the stream.

FIGS. 5A and 5B are just example embodiments of playlist generation andaudio file streaming. Other embodiments may be used to achieve the sameor similar outcomes.

4. GENERATING PLAYLISTS WITH RELATED MUSIC AND STORIES

One possible disadvantage of computer-generated playlists is that thestories and music selected for inclusion in a given playlist might beunrelated. The generation of these playlists, however, provides anopportunity to thematically associate the entries therein. For example,attributes or characteristics of each entry in the playlist may be usedas a basis for selecting other entries in the playlist, or to orderpreviously-selected entries.

For instance, the text within a text file containing a story may be usedto select other entries (stories or music) in the playlist. Further, anaudio file containing music may include or be associated with one ormore attributes. These attributes may exist as metadata that can beincluded in the audio file or in another file paired with the audiofile. Such attributes may include various descriptors of the audio fileand/or the music contained therein, such as the name of the artist(s)who wrote and/or performed the music, the title of the music (e.g., asong title), lyrics to the music, the length of the music, the publisherof the music (e.g., the record label), where the music was recorded, andso on. Any of these attributes may be used to select other entries(stories or music) in the playlist.

In some embodiments, playlists may have a pre-defined theme (e.g., a“classic rock” theme for a playlist focused on music, an “artist” themefor a playlist involving music and/or interviews with a particularartist, or a “soccer” theme for stories and/or music related to aparticular soccer event or team). When a playlist is associated withsuch a theme, selections of the entries therein may be based on thetheme as well as other entries in the playlist.

When an audio file is selected for a particular reason (e.g., it isdetermined to be related to the content of a previous audio file), thisreason may be displayed to the user of the client device that plays outthe audio file. Further, the user may be given the ability (e.g., via auser interface) to express preferences for certain types ofrelationships between audio files. For instance, the user might indicatethat the relationship used (i) was acceptable, (ii) should not be usedagain, or (iii) should be replaced by a different relationship.

A. Selecting a Story Based on Music

An audio file containing music may be selected for inclusion in theplaylist based on information in the user profile. For instance, theuser profile may indicate that the user for whom the playlist is beinggenerated previously expressed interest in the style of the music or theartist who performs the music.

Any of the attributes of the audio file may be used to select a storythat precedes or follows the audio file in the playlist. As an example,the artist name may be used to find a news story regarding the artist,and a reference to this news story may be placed in the playlist at aposition before or after the reference to the audio file containing themusic. If the user is interested in the artist, the selected story isalso likely to be of interest to the user. For instance, the selectedstory may include tour dates for the artist, or news of an upcomingalbum release from the artist.

In some cases, the story may be selected also based on information inthe user's profile, such as the user's location and/or purchasinghistory. For instance, the story including tour dates may be selectedbecause one or more of those tour dates is geographically nearby thelocation of the user (e.g., within a 50 mile threshold distance from theuser's home). Alternatively or additionally, the news of the upcomingalbum release may be selected because the user's purchasing historyincludes the purchase of another album or song from the artist.

Other examples of selecting a story based on attributes associated withan audio file containing music are possible. For instance, the title orlyrics may be used as a basis for selecting a story. Particularly, theserver device may identify keywords or keyphrases appearing in the titleor lyrics, and may then use these keywords or keyphrases as input to asearch engine. The search engine may return one or more stories relatedto the keywords or keyphrases. As an example, if the title or lyricscontain the words “car,” “truck,” “drive,” or “driving,” the searchengine may return references to one or more stories about automobiles,driving, roads, or traffic conditions. Further, the search engine mayalso return references to one or more stories containing advertisementsfor automobile sales.

In cases where the selected story exists in a text file, the serverdevice may use TTS technology to convert the text file to an audio filecontaining the story, store this audio file in a database, and include areference to the stored audio file in the playlist.

FIG. 6 is a flow chart illustrating an example embodiment. The processillustrated by FIG. 6 may be carried out by a server device, such ascomputing device 200, and/or a cluster of computing devices, such asserver cluster 304. However, the process can be carried out by othertypes of devices or device subsystems.

Block 600 may involve, possibly based on a profile associated with aclient device, selecting an audio file containing music. The clientdevice and the server device may be in communication with one another byway of a wide-area network, and the client device may include an audioplayer application.

Block 602 may involve, possibly based on an attribute of the audio filecontaining the music, selecting a text file containing a story. Block604 may involve converting, by an automatic text-to-speech system, thetext file containing the story to an audio file containing the story. Insome cases, blocks 602 and 604 may be replaced by directly selecting anaudio file containing the story. This may occur if the audio file isassociated with one or more attributes that describe its content.

Block 606 may involve generating a playlist for the client device,wherein the playlist includes (i) a reference to the audio filecontaining the music, and (ii) a reference to the audio file containingthe story. Block 608 may involve transmitting, over the wide areanetwork, the playlist to the client device. Reception of the playlist atthe client device may cause the audio player application to retrieve andplay out each of the audio file containing the music and the audio filecontaining the story. The audio player application may retrieve each ofthe audio file containing the music and the audio file containing thestory from the server device.

In some cases, the text or audio file containing the story may also beselected based on the text or audio file containing the story beingavailable from a third-party media server affiliated with the serverdevice. In other words, the text or audio file containing the storymight be selected from a media server that is not operated or owned bythe entity that operates or owns the server device that generates theplaylist.

The attribute may be one of an artist name associated with the music, asong title associated with the music, and/or a song lyric associatedwith the music. But other attributes are possible. The text or audiofile containing the story may be selected based on the attribute beingin or associated with the text or audio file containing the story.Alternatively or additionally, the attribute may be associated with aparticular geographical region, and the text or audio file containingthe story may be selected based on the text or audio file containing thestory including text related to the particular geographical region orbeing associated with the particular geographical region.

In other embodiments, the profile associated with the client device maycontain an indication of a location of the client device, and the audiofile containing the music may be selected so that the attribute isrelated to the location of the client device. Or, the audio filecontaining the music may be selected based on an artist associated withthe music performing within a pre-defined distance of the location ofthe client device within an upcoming time period (e.g., within the nextseveral days or weeks).

In some embodiments, the reference to the audio file containing themusic may be ordered in the playlist before the reference to the audiofile containing the story. Thus, the audio player application mayretrieve and play out at least some of the audio file containing themusic before retrieving and playing out the audio file containing thestory. Alternatively, the reference to the audio file containing themusic may be ordered in the playlist after the reference to the audiofile containing the story. In this case, the audio player applicationmay retrieve and play out at least some of the audio file containing themusic after retrieving and playing out the audio file containing thestory.

In some embodiments, the profile associated with the client device maycontain a preferred language, and the audio file containing the musicmay be selected so that at least some singing therein is in thepreferred language. The attribute may indicate that at least some of asinging portion of the music is in the preferred language, and the textor audio file containing the story may be selected based on at leastpart of the story being in the preferred language.

B. Selecting Music Based on a Story

Instead of or in addition to selecting a story based on attributesassociated with an audio file, an audio file may be selected based onthe content of a story. This may involve selecting a text filecontaining a story based on the profile of the user, then selecting anaudio file containing music based on the content of the text file. Forinstance, the text file may be selected based on the user'sdemographics, interests, location, purchasing history, and/or otherfactors.

The server device may identify keywords or keyphrases appearing in thetext file, and may then use these keywords or keyphrases as input to asearch engine. The search engine may return references to one or moreaudio files containing music that are related to the keywords orkeyphrases. For instance, the search engine may search for the keywordsor keyphrases in attributes associated with the audio files. As anexample, if the text files contains the words “car,” “truck,” or“drive,” or “driving,” the search engine may return references to one ormore audio files with artist names, song titles, or lyrics aboutautomobiles and driving. In some embodiments, a semantic analysis of thetext file may take place to determine meaning(s) or theme(s) of thewords therein. A semantic analysis may involve associating syntacticstructures, such as phrases, clauses, sentences, paragraphs, and so on,to their language-independent meanings. In this way, the words in a textor audio file may be considered in context of other words therein. Theoutcome of this analysis may be used to select one or more moods of thetext.

Further, the server device may use TTS technology to convert the textfile to an audio file containing the story, store this audio file in adatabase, and include a reference to the stored audio file in theplaylist.

FIG. 7 is a flow chart illustrating an example embodiment. Like FIG. 6,the process illustrated by FIG. 7 may be carried out by a server device,such as computing device 200, and/or a cluster of computing devices,such as server cluster 304. However, the process can be carried out byother types of devices or device subsystems.

Block 700 may involve, possibly based on a profile associated with aclient device, selecting a text file containing a story. The clientdevice and the server device may be in communication with one another byway of a wide-area network, and the client device may include an audioplayer application.

Block 702 may involve, possibly based on text within the text filecontaining the story, selecting an audio file containing music. Theaudio file containing the music may be selected based on the textmatching one of an artist name, a song title, or a song lyric associatedwith the music. Block 704 may involve converting, by an automatictext-to-speech system, the text file containing the story to an audiofile containing the story.

In some cases, at least parts of blocks 700, 702, and 704 may bereplaced by directly selecting an audio file containing the story. Thismay occur if the audio file is associated with one or more attributesthat describe its content. In these cases, a separate conversion blockmight not be necessary.

Block 706 may involve generating a playlist for the client device. Theplaylist may include (i) a reference to the audio file containing themusic, and (ii) a reference to the audio file containing the story.Block 708 may involve transmitting, over the wide area network, theplaylist to the client device. Reception of the playlist at the clientdevice may cause the audio player application to retrieve and play outeach of the audio file containing the music and the audio filecontaining the story.

The embodiments of FIGS. 6 and 7 may be simplified by the removal of anyone or more of the features shown therein. Further, these embodimentsmay be combined with one another, as well as features, aspects, and/orimplementations of any of the previous figures or otherwise describedherein.

5. GENERATING PLAYLISTS WITH RELATED MUSIC AND STORY MOOD

Another possible disadvantage of computer-generated playlists is thatthe stories and music selected for inclusion in a given playlist mighthave different moods. The transition between some moods might be jarringto the listener. For instance, if a news story in the playlist is aboutthe benefits of quiet mediation, but the previous or next audio filereferenced in the playlist contains a loud, driving piece of music, thesequencing of these entries might seem inappropriate.

Even worse, computer-generated playlists might place a news story abouta tragedy before or after a piece of music with lyrics that areinsensitive in the context of the tragedy. As an example, if a newsstory is a report about a shooting, or the trial of the perpetrators ofthe shooting, music following this news story with lyrics that glorifyor joke about guns, death, or lawlessness would seem to mock thetragedy. Such an arrangement of entries in a playlist might be offensiveto a listener.

The computerized generation of playlists, however, provides anopportunity to select entries in the playlist such that the moods ofsequentially ordered music and stories are related. In some cases, thismeans that the mood of an entry in the playlist is based on the moods ofone or more previous entries in the playlist. For instance, the mood ofentry i in the playlist may be similar or the same as that of entry i−1in the playlist, or the mood of entry i may be opposed to that of entryi−1. In doing so, the textual content of news stories, as well as thecontent of music, may be taken into account.

The mood of a story may be determined by the presence or absence ofcertain keywords and/or keyphrases. As noted above, a semantic analysisof the text file may take place to determine meaning(s) or theme(s) ofthe words therein. The outcome of this analysis may be used to selectone or more moods of the text. For audio stories, the vocalcharacteristics of the speaker, such as prosodic information (e.g.,intonation of the voice, emphasis on certain syllables or words), may beused instead or as well.

In some cases, audio files containing stories may be converted, usingspeech-to-text (speech recognition) technology into text filescontaining the stories. Then, these text files can be analyzed forkeywords and keyphrases, and/or semantic information, associated withone or more moods. In some cases, a human may manually determine one ormore moods of a story. The audio files containing the stories may thenbe associated with the identified moods. For instance, the moods mightbe included in the audio files as metadata, or in separate filesassociated with the respective audio files.

The mood of a piece of music may be determined by the presence orabsence of certain keyword and/or keyphrases in the artist name, songtitle, and/or lyrics of the music, as well as the tempo, dynamic range,and/or volume of the music. As noted above, an audio file containingmusic may be associated with metadata that contains textualrepresentations of these characteristics.

Not unlike textual representations of stories, this metadata can beanalyzed for keywords and keyphrases associated with one or more moods.In some cases, a human may manually determine one or more moods of apiece of music. The audio files containing the music may then beassociated with the identified moods. For instance, the moods might beincluded in the audio files as metadata, or in separate files associatedwith the respective audio files.

Based on the identified mood of a story, an appropriate audio filecontaining music may be selected. Alternatively or additionally, basedon the identified mood of a piece of music, an appropriate audio filecontaining a story may be selected. Relationships between various moodsthat may facilitate these processes are illustrated in FIG. 8.

Table 800 lists a plurality of moods: happiness, sadness, humor,tragedy, anger, frustration, anxiety, loneliness, confusion, excitement,hope, and relaxation. For each of these moods, an entry provides anindication a particular mood's relationship with the other moods. Wherean entry contains a check mark, the two moods match one another. Wherean entry contains an x, the two moods are opposed to one another. Wherethe entry is blank, the two moods neither match nor are opposed to oneanother.

For instance, happiness is a match for itself, as well as humor.Happiness is also opposed to sadness, tragedy, anger, frustration, andloneliness. Thus, if the goal is to match the mood of a story to that ofa piece of music associated with happiness, only stories associated withmoods of happiness or humor would be candidates for selection. On theother hand, if the goal is to choose a story with a mood that does notoppose that of the piece of music associated with happiness, onlystories associated with moods of sadness, tragedy, anger, frustration,and loneliness would be excluded from selection. Further, if the goal isto choose a story with a mood that is opposed to that of the piece ofmusic associated with happiness, only stories associated with moods ofsadness, tragedy, anger, frustration, and loneliness would be selected.

The relationships indicated by table 800 are presented for purpose ofexample. Different relationships between moods may be used, and thustable 800 could be filled out differently. Further, more or fewer moodsmay be used in such a table.

In some situations, music with certain moods or content may be purposelyomitted from playlists. Thus, audio files containing music that areassociated with characteristics that embody a particular mood might beexcluded from playlists. This may be done, for instance, in response tocurrent events or due to the current date. For example, music associatedwith sadness or anger might not be placed in playlists that aregenerated on a festive holiday.

Further, based on a profile of a client device, music associated withcertain moods or associated with certain keywords, keyphrases, orsemantics might not be included in playlists generated for that clientdevice. This may be done to avoid offending a user with knownsensitivities.

As noted above, playlists may have a pre-defined theme (e.g., a “classicrock” theme for a playlist focused on music, an “artist” theme for aplaylist involving music and/or interviews with a particular artist, ora “soccer” theme for stories and/or music related to a particular soccerevent or team). When a playlist is associated with such a theme,selections of the entries therein may be based on the theme as well asthe mood of other entries in the playlist.

When an audio file is selected for a particular reason (e.g., it isdetermined to be related to the content of a previous audio file), thisreason may be displayed to the user of the client device that plays outthe audio file. Further, the user may be given the ability (e.g., via auser interface) to express preferences for certain types ofrelationships between audio files. For instance, the user might indicatethat the relationship used (i) was acceptable, (ii) should not be usedagain, or (iii) should be replaced by a different relationship.

A. Selecting Music Based on the Mood of a Story

FIG. 9 is a flow chart illustrating an embodiment for selecting an audiofile containing music based on the mood of a story. Like FIGS. 6 and 7,the process illustrated by FIG. 9 may be carried out by a server device,such as computing device 200, and/or a cluster of computing devices,such as server cluster 304. However, the process can be carried out byother types of devices or device subsystems.

Block 900 may involve obtaining an audio file containing a story. Aclient device and the server device may be in communication with oneanother by way of a wide-area network, and the client device may includean audio player application. Block 902 may involve converting, by anautomatic speech-to-text system, the audio file containing the story toa text file containing the story.

Block 904 may involve, possibly based on presence or absence of one ormore keywords in the text file containing the story, determining a moodof the story. This block may involve a semantic analysis and/or aprosodic analysis. The mood may be one of happiness, sadness, humor,tragedy, anger, frustration, anxiety, loneliness, confusion, excitement,hope, relaxation, or some other mood.

In some cases, the audio file containing a story may already beassociated with a mood. In such situations, part or all of blocks 902and 904 may be omitted. For instance, determining the mood of the storymay be based on one or more story attributes associated with the audiofile containing the story.

Block 906 may involve, possibly based on the mood of the story,selecting an audio file containing music. The audio file containing themusic may be associated with one or more music attributes that isindicative of the mood. In some cases, the story attribute(s) may matchthe music attribute(s). Alternatively or additionally, selecting theaudio file containing the music may be based on presence or absence ofthe one or more keywords in (i) an artist name associated with themusic, (ii) a title associated with the music, or (iii) lyricsassociated with the music.

Block 908 may involve generating a playlist for the client device. Theplaylist may include (i) a reference to the audio file containing themusic, and (ii) a reference to the audio file containing the story.Generating the playlist to include (i) the reference to the audio filecontaining the music, and (ii) the reference to the audio filecontaining the story may be based on the mood, a date, and/or a time ofday.

Block 910 may involve transmitting, over the wide area network, theplaylist to the client device. Reception of the playlist at the clientdevice may cause the audio player application to retrieve and play outeach of the audio file containing the music and the audio filecontaining the story. The audio player application may retrieve each ofthe audio file containing the music and the audio file containing thestory from the server device. Alternatively, at least one of the audiofile containing the music or the audio file containing the story may beretrieved from a third-party media server affiliated with the serverdevice.

In some embodiments, the reference to the audio file containing themusic may be ordered in the playlist before the reference to the audiofile containing the story, and the audio player application may retrieveand play out at least some of the audio file containing the music beforeretrieving and playing out the audio file containing the story.Alternatively, the reference to the audio file containing the music maybe ordered in the playlist after the reference to the audio filecontaining the story, and the audio player application may retrieve andplay out at least some of the audio file containing the music afterretrieving and playing out the audio file containing the story.

The one or more music attributes being indicative of the mood mayinvolve the music attribute(s) representing the mood. In someembodiments, the mood may be a first mood, and the music attribute(s)being indicative of the first mood may involve the music attribute(s)representing a second mood that is based on the first mood. The musicattribute(s) being indicative of the mood may further involve the musicattribute(s) indicating that a particular tempo, a particular beatpattern, or a particular chord progression is (i) associated with themood, and (ii) present in the music.

B. Selecting a Story Based on the Mood of a Piece of Music

FIG. 10 is a flow chart illustrating an embodiment for selecting anaudio file containing a story based on the mood of a piece of music.Like FIGS. 6, 7, and 9, the process illustrated by FIG. 10 may becarried out by a server device, such as computing device 200, and/or acluster of computing devices, such as server cluster 304. However, theprocess can be carried out by other types of devices or devicesubsystems.

Block 1000 may involve obtaining an audio file containing music. Aclient device and the server device may be in communication with oneanother by way of a wide-area network, and the client device may includean audio player application.

Block 1002 may involve, possibly based on one or more music attributesassociated with the audio file containing the music, determining a moodof the music. The music attribute(s) may be indicative of the mood. Forinstance, the music attribute(s) may indicate that a particular tempo, aparticular beat pattern, or a particular chord progression is (i)associated with the mood, and (ii) present in the music.

Block 1004 may involve, possibly based on the mood of the music,selecting a text file containing a story. One or more keywords in thetext file containing the story, or the semantics thereof, may beindicative of the mood. Block 1006 may involve converting, by anautomatic text-to-speech system, the text file containing the story toan audio file containing the story. In some cases, at least part ofblocks 1004 and 1006 may be replaced by directly selecting an audio filecontaining the story. This may occur where the audio file containing thestory is associated with one or more story attributes that describe itscontent.

Block 1008 may involve generating a playlist for the client device. Theplaylist may include (i) a reference to the audio file containing themusic, and (ii) a reference to the audio file containing the story.

Block 1010 may involve transmitting, over the wide area network, theplaylist to the client device. Reception of the playlist at the clientdevice may cause the audio player application to retrieve and play outeach of the audio file containing the music and the audio filecontaining the story.

The embodiments of FIGS. 9 and 10 may be simplified by the removal ofany one or more of the features shown therein. Further, theseembodiments may be combined with one another, as well as features,aspects, and/or implementations of any of the previous figures orotherwise described herein.

6. GENERATING PLAYLISTS BASED ON TIME CONSTRAINTS

Media playout devices, such as radios and televisions, as well as mediaplayer applications on various types of computing devices, may supportsleep timers. If a sleep timer function is activated during audio (orvideo) playout, the playout continues for a designated period of time,and then is abruptly terminated at the end of the duration defined bythe sleep timer. A goal of such a function is to allow a user to driftoff to sleep while the playout occurs, and to turn off the playout oncethe user is sleeping, thereby saving energy and providing for a quieter,more sleep-conducive environment.

However, the media that is played out between when the sleep timerfunction is activated and playout is terminated does not change due toactivation of the sleep timer function—the media played out is the sameas if the sleep timer function had not been activated. Thus, any mediathat is not conducive to sleep (e.g., loud music and/or music with ahigh dynamic range), may be played out when the user is trying to sleep.Also, the abrupt termination of the playout may be disturbing to theuser, and may even wake up a sleeping user. With computer generation ofplaylists, these two disadvantages of the current technology can beovercome.

Nonetheless, the embodiments described herein can be used for purposesother than supporting an improved sleep timer function. Theseembodiments may be used, for example, whenever a user wishes to changean existing playlist, or to generate a playlist of a specific durationand/or of a specific mood. For instance, a positioning unit (e.g.,global positioning system (GPS)) in an automobile or on a wirelesscommunication device may be used at least in part to determine a time toreach a destination. The timers herein may be set based on such a time,and may also be updated as that time changes. Or, the timers herein maybe based on a predetermined schedule, such as events occurring in anindividual's or group's calendar application, or based on a train or busschedule. Other possibilities exist.

FIG. 11 depicts a timing diagram for generating a new playlist inresponse to activation of a timer function. At time T0, a client devicebegins playout of entry n−1 of playlist 1. Playlist 1 may be a playlistthat was generated for the client device, and may have been generatedaccording to any of the embodiments herein. Not unlike the embodiment ofFIG. 5B, the client device may, for each entry in playlist 1, (i)sequentially request and receive a stream of the entry, and (ii) playout the stream.

At time T1, the client device begins playout of entry n of playlist 1.This entry is approximately four minutes long. At time T2, about threeminutes into the playout of entry n of playlist 1, the client devicereceives a timer function activation, indicating that the requestedduration of the timer is 30 minutes. The timer may have been activatedby a user of the client device, and the user may have selected theduration, or the duration may have been selected automatically based ona predetermined schedule or a trigger from another software unit.

In response to receiving the timer function activation, and with theunderstanding that there is approximately one minute remaining in theplayout of entry n of playlist 1, at time T3 the client device mayrequest a 29-minute playlist. This request may be transmitted to aserver device, for instance the server device that provided playlist 1to the client device.

In response to receiving such a request, the server device may generateplaylist 2. The entries for this playlist may be selected so that thetotal duration of the playlist is approximately 29 minutes long.Further, if the timer is a sleep timer, these entries may be selected sothat they are conducive to sleep. For example, music with slow tempos,narrow dynamic ranges, and/or lower volumes may be selected.Additionally, entries in the playlist may be arranged so that any musicor stories therein grow gradually quieter over the duration of theplaylist. Thus, playlist 2 may be organized to lull a listener to sleep.

At time T4, the client device may receive playlist 2. At time T5, as theplayout of entry n of playlist 1 ends, the client device may beginplaying out entry one of playlist 2. Thus, the client device may switchfrom playing out the entries of playlist 1 to playing out the entries ofplaylist 2. At time T6, the client device may continue playout of theentries of playlist 2 by beginning playout of entry 2 of playlist 2.

FIG. 12 is a flow chart illustrating an embodiment for switching fromplayout of one playlist to playout of another playlist. Like FIGS. 6, 7,9, and 10, the process illustrated by FIG. 12 may be carried out by aserver device, such as computing device 200, and/or a cluster ofcomputing devices, such as server cluster 304. However, the process canbe carried out by other types of devices or device subsystems.

Block 1200 may involve generating a first playlist for a client device.The first playlist may include references to a first plurality of audiofiles in a first specified order. Playout of the first plurality ofaudio files may have a first duration. The client device and the serverdevice may be in communication with one another by way of a wide-areanetwork, and the client device may include an audio player application.

Block 1202 may involve transmitting, over the wide area network, thefirst playlist to the client device. Reception of the first playlist atthe client device may cause the audio player application to retrieve andplay out at least some of the first plurality of audio files in thefirst specified order.

Block 1204 may involve, while the client device is playing out a currentaudio file of the first plurality of audio files, receiving aninstruction from the client device. Block 1206 may involve, possibly inresponse to receiving the instruction, generating a second playlist. Thesecond playlist may include references to a second plurality of audiofiles in a second specified order. Playout of the second plurality ofaudio files may have a second duration that is less than the firstduration.

Further, the second plurality of audio files might not include any audiofiles of the first plurality of audio files that are before the currentaudio file in the first specified order. Thus, the second plurality offiles may be selected to avoid repeating media that was already playedout by the client device. Alternatively or additionally, the secondplurality of audio files may include at least some audio files of thefirst plurality of audio files that are after the current audio file inthe first specified order. In some cases, generating the second playlistmay involve selecting, from the audio files in the first plurality ofaudio files that are after the current audio file in the first specifiedorder, the second plurality of audio files. Thus, the second pluralityof files may be selected to include at least some media that would haveotherwise been played out due to traversal of the first playlist.Nonetheless, the second plurality of files might have no files in commonwith the first plurality of files.

In some embodiments, the audio files in the first plurality of audiofiles are associated with respective priorities. Generating the secondplaylist may involve selecting the second plurality of audio files fromthe audio files of the first plurality of audio files while givingpreference to higher priority audio files over lower priority audiofiles. Audio files containing advertisements may be associated withhigher priorities than audio files containing music, or vice versa.

Block 1208 may involve transmitting, over the wide area network, thesecond playlist to the client device. Reception of the second playlistat the client device may cause the audio player application to retrieveand play out the second plurality of audio files in the second specifiedorder. Reception of the second playlist at the client device may alsocause the audio player application to play out the second plurality ofaudio files after the audio player completes playout of the currentaudio file.

In some embodiments, the indication specifies a target duration, andgenerating second playlist may involve selecting the second plurality ofaudio files so that the second duration is within a threshold of thetarget duration. The threshold may be, for example, three minutes orless. Thus, the threshold may be 15 seconds or less, 30 seconds or less,1 minute or less, 2 minutes or less, and so on. Additionally, if theindication specifies that the client device has activated a sleep timerwith the target duration, and the second plurality of audio files may beselected based on preferences for one or more of (i) slow tempos, (ii)narrow dynamic ranges, or (iii) lower volumes.

The embodiment of FIG. 12 may be simplified by the removal of any one ormore of the features shown therein. Further, this embodiment may becombined with features, aspects, and/or implementations of any of theprevious figures or otherwise described herein.

7. CONCLUSION

The present disclosure is not to be limited in terms of the particularembodiments described in this application, which are intended asillustrations of various aspects. Many modifications and variations canbe made without departing from its scope, as will be apparent to thoseskilled in the art. Functionally equivalent methods and apparatuseswithin the scope of the disclosure, in addition to those enumeratedherein, will be apparent to those skilled in the art from the foregoingdescriptions. Such modifications and variations are intended to fallwithin the scope of the appended claims. The above detailed descriptiondescribes various features and functions of the disclosed systems,devices, and methods with reference to the accompanying figures. Theexample embodiments described herein and in the figures are not meant tobe limiting. Other embodiments can be utilized, and other changes can bemade, without departing from the scope of the subject matter presentedherein. It will be readily understood that the aspects of the presentdisclosure, as generally described herein, and illustrated in thefigures, can be arranged, substituted, combined, separated, and designedin a wide variety of different configurations, all of which areexplicitly contemplated herein.

With respect to any or all of the message flow diagrams, scenarios, andflow charts in the figures and as discussed herein, each step, block,and/or communication can represent a processing of information and/or atransmission of information in accordance with example embodiments.Alternative embodiments are included within the scope of these exampleembodiments. In these alternative embodiments, for example, functionsdescribed as steps, blocks, transmissions, communications, requests,responses, and/or messages can be executed out of order from that shownor discussed, including substantially concurrent or in reverse order,depending on the functionality involved. Further, more or fewer blocksand/or functions can be used with any of the ladder diagrams, scenarios,and flow charts discussed herein, and these ladder diagrams, scenarios,and flow charts can be combined with one another, in part or in whole.

A step or block that represents a processing of information cancorrespond to circuitry that can be configured to perform the specificlogical functions of a herein-described method or technique.Alternatively or additionally, a step or block that represents aprocessing of information can correspond to a module, a segment, or aportion of program code (including related data). The program code caninclude one or more instructions executable by a processor forimplementing specific logical functions or actions in the method ortechnique. The program code and/or related data can be stored on anytype of computer readable medium such as a storage device including adisk, hard drive, or other storage medium.

The computer readable medium can also include non-transitory computerreadable media such as computer-readable media that store data for shortperiods of time like register memory, processor cache, and random accessmemory (RAM). The computer readable media can also includenon-transitory computer readable media that store program code and/ordata for longer periods of time. Thus, the computer readable media mayinclude secondary or persistent long term storage, like read only memory(ROM), optical or magnetic disks, compact-disc read only memory(CD-ROM), for example. The computer readable media can also be any othervolatile or non-volatile storage systems. A computer readable medium canbe considered a computer readable storage medium, for example, or atangible storage device.

Moreover, a step or block that represents one or more informationtransmissions can correspond to information transmissions betweensoftware and/or hardware modules in the same physical device. However,other information transmissions can be between software modules and/orhardware modules in different physical devices.

The particular arrangements shown in the figures should not be viewed aslimiting. It should be understood that other embodiments can includemore or less of each element shown in a given figure. Further, some ofthe illustrated elements can be combined or omitted. Yet further, anexample embodiment can include elements that are not illustrated in thefigures.

While various aspects and embodiments have been disclosed herein, otheraspects and embodiments will be apparent to those skilled in the art.The various aspects and embodiments disclosed herein are for purposes ofillustration and are not intended to be limiting, with the true scopebeing indicated by the following claims.

What is claimed is:
 1. A method comprising: receiving, by a clientdevice, an instruction specifying that a timer has been activated with atarget duration, wherein the client device is playing out a currentaudio file of a first plurality of audio files, wherein the firstplurality of audio files has a first specified order, and whereinplayout of the first plurality of audio files has a first duration;transmitting, by the client device and to a server device, an indicationthat the timer has been activated with the target duration; receiving,by the client device and from the server device, a second playlistcontaining references to a second plurality of audio files in a secondspecified order, wherein playout of the second plurality of audio fileshas a second duration that is: less than the first duration and within athreshold duration of the target duration; and causing, by the clientdevice, an audio player to, after playout of the current audio filecompletes, stop playing out audio files from the first plurality ofaudio files and retrieve and play out the second plurality of audiofiles in the second specified order.
 2. The method of claim 1, whereinthe second plurality of audio files does not include any audio files ofthe first plurality of audio files that are before the current audiofile in the first specified order.
 3. The method of claim 1, wherein thesecond plurality of audio files includes at least some audio files ofthe first plurality of audio files that are after the current audio filein the first specified order.
 4. The method of claim 3, wherein theaudio files in the first plurality of audio files are each associatedwith a higher priority or a lower priority, and wherein the secondplurality of audio files includes audio files from the first pluralityof audio files associated with the higher priority.
 5. The method ofclaim 4, wherein audio files containing advertisements are associatedwith the higher priority and audio files containing music are associatedwith the lower priority.
 6. The method of claim 1, wherein the thresholdduration is three minutes or less.
 7. The method of claim 1, wherein thesecond duration is based on the target duration minus any time remainingfor playout of the current audio file.
 8. The method of claim 1, whereinthe second plurality of audio files includes audio files with (i) slowertempos, (ii) narrower dynamic ranges, or (iii) lower volumes than thefirst plurality of audio files.
 9. The method of claim 1, whereincausing the audio player to play out the second plurality of audio filesin the second specified order comprises gradually decreasing playoutvolume as the second plurality of audio files are played out.
 10. Anarticle of manufacture including a non-transitory computer-readablemedium, having stored thereon program instructions that, upon executionby a client device, cause the client device to perform operationscomprising: receiving an instruction specifying that a timer has beenactivated with a target duration, wherein the client device is playingout a current audio file of a first plurality of audio files, whereinthe first plurality of audio files has a first specified order, andwherein playout of the first plurality of audio files has a firstduration; transmitting, to a server device, an indication that the timerhas been activated with the target duration; receiving, from the serverdevice, a second playlist containing references to a second plurality ofaudio files in a second specified order, wherein playout of the secondplurality of audio files has a second duration that is: less than thefirst duration and within a threshold duration of the target duration;and causing an audio player to, after playout of the current audio filecompletes, stop playing out audio files from the first plurality ofaudio files and retrieve and play out the second plurality of audiofiles in the second specified order.
 11. The article of manufacture ofclaim 10, wherein the second plurality of audio files does not includeany audio files of the first plurality of audio files that are beforethe current audio file in the first specified order.
 12. The article ofmanufacture of claim 10, wherein the second plurality of audio filesincludes at least some audio files of the first plurality of audio filesthat are after the current audio file in the first specified order. 13.The article of manufacture of claim 12, wherein the audio files in thefirst plurality of audio files are each associated with a higherpriority or a lower priority, and wherein the second plurality of audiofiles includes audio files from the first plurality of audio filesassociated with the higher priority.
 14. The article of manufacture ofclaim 13, wherein audio files containing advertisements are associatedwith the higher priority and audio files containing music are associatedwith the lower priority.
 15. The article of manufacture of claim 10,wherein the threshold duration is three minutes or less.
 16. The articleof manufacture of claim 10, wherein the second duration is based on thetarget duration minus any time remaining for playout of the currentaudio file.
 17. The article of manufacture of claim 10, wherein thesecond plurality of audio files includes audio files with (i) slowertempos, (ii) narrower dynamic ranges, or (iii) lower volumes than thefirst plurality of audio files.
 18. The article of manufacture of claim10, wherein causing the audio player to play out the second plurality ofaudio files in the second specified order comprises gradually decreasingplayout volume as the second plurality of audio files are played out.19. An article of manufacture including a non-transitorycomputer-readable medium, having stored thereon program instructionsthat, upon execution by a server device, cause the server device toperform operations comprising: generating a first playlist for a clientdevice, wherein the first playlist includes references to a firstplurality of audio files in a first specified order, wherein playout ofthe first plurality of audio files has a first duration; transmittingover a wide area network, the first playlist to the client device;receiving an instruction from the client device, wherein the instructionspecifies that the client device has activated a sleep timer with atarget duration; generating a second playlist, wherein the secondplaylist includes references to a second plurality of audio files in asecond specified order, wherein playout of the second plurality of audiofiles has a second duration that is: less than the first duration andwithin a threshold duration of the target duration; and transmitting,over the wide area network, the second playlist to the client device.20. The article of manufacture of claim 19, wherein the second pluralityof audio files includes at least some audio files of the first pluralityof audio files that are after a current audio file in the firstspecified order.